home *** CD-ROM | disk | FTP | other *** search
/ Merciful 1 / Merciful - Disc 1.iso / software / d / devpak / devpakv3.01kickstartv1.3b.dms / devpakv3.01kickstartv1.3b.adf / include / intuition / intuition.i < prev    next >
Text File  |  1991-11-20  |  39KB  |  1,010 lines

  1.     IFND    INTUITION_INTUITION_I
  2. INTUITION_INTUITION_I    SET    1
  3. **
  4. **    $Filename: intuition/intuition.i $
  5. **    $Release: 1.3 $
  6. **
  7. **    main intuition include 
  8. **
  9. **    (C) Copyright 1985,1986,1987,1988 Commodore-Amiga, Inc.
  10. **        All Rights Reserved
  11. **
  12.  
  13.     IFND EXEC_TYPES_I
  14.     INCLUDE "exec/types.i"
  15.     ENDC
  16.  
  17.     IFND    GRAPHICS_GFX_I
  18.     include "graphics/gfx.i"
  19.     ENDC
  20.  
  21.     IFND    GRAPHICS_CLIP_I
  22.     include "graphics/clip.i"
  23.     ENDC
  24.  
  25.     IFND    GRAPHICS_VIEW_I
  26.     include "graphics/view.i"
  27.     ENDC
  28.  
  29.     IFND    GRAPHICS_RASTPORT_I
  30.     include "graphics/rastport.i"
  31.     ENDC
  32.  
  33.     IFND    GRAPHICS_LAYERS_I
  34.     include "graphics/layers.i"
  35.     ENDC
  36.  
  37.     IFND    GRAPHICS_TEXT_I
  38.     include "graphics/text.i"
  39.     ENDC
  40.  
  41.     IFND EXEC_PORTS_I
  42.     include "exec/ports.i"
  43.     ENDC
  44.  
  45.     IFND    DEVICES_TIMER_I
  46.     include "devices/timer.i"
  47.     ENDC
  48.  
  49.     IFND    DEVICES_INPUTEVENT_I
  50.     include "devices/inputevent.i"
  51.     ENDC
  52.  
  53.  
  54. ; ========================================================================;
  55. ; === Menu ===============================================================;
  56. ; ========================================================================;
  57.  STRUCTURE Menu,0
  58.  
  59.     APTR  mu_NextMenu    ; menu pointer, same level
  60.     WORD mu_LeftEdge    ; position of the select box
  61.     WORD mu_TopEdge    ; position of the select box
  62.     WORD mu_Width    ; dimensions of the select box
  63.     WORD mu_Height    ; dimensions of the select box
  64.     WORD mu_Flags    ; see flag definitions below
  65.     APTR mu_MenuName    ; text for this Menu Header
  66.     APTR  mu_FirstItem    ; pointer to first in chain
  67.  
  68.     ; these mysteriously-named variables are for internal use only
  69.     WORD mu_JazzX
  70.     WORD mu_JazzY
  71.     WORD mu_BeatX
  72.     WORD mu_BeatY
  73.  
  74.     LABEL mu_SIZEOF
  75.  
  76. ;*** FLAGS SET BY BOTH THE APPLIPROG AND INTUITION ***
  77. MENUENABLED EQU $0001    ; whether or not this menu is enabled
  78.  
  79. ;*** FLAGS SET BY INTUITION ***
  80. MIDRAWN EQU $0100    ; this menu's items are currently drawn
  81.  
  82. ; ========================================================================;
  83. ; === MenuItem ===========================================================;
  84. ; ========================================================================;
  85.  STRUCTURE MenuItem,0
  86.  
  87.     APTR mi_NextItem    ; pointer to next in chained list
  88.     WORD mi_LeftEdge    ; position of the select box
  89.     WORD mi_TopEdge    ; position of the select box
  90.     WORD mi_Width    ; dimensions of the select box
  91.     WORD mi_Height    ; dimensions of the select box
  92.     WORD mi_Flags    ; see the defines below
  93.  
  94.     LONG mi_MutualExclude ; set bits mean this item excludes that item
  95.  
  96.     APTR mi_ItemFill    ; points to Image, IntuiText, or NULL
  97.  
  98.     ; when this item is pointed to by the cursor and the items highlight
  99.     ; mode HIGHIMAGE is selected, this alternate image will be displayed
  100.     APTR mi_SelectFill    ; points to Image, IntuiText, or NULL
  101.  
  102.     BYTE mi_Command    ; only if appliprog sets the COMMSEQ flag
  103.  
  104.     BYTE mi_KludgeFill00 ; This is strictly for word-alignment
  105.  
  106.     APTR mi_SubItem    ; if non-zero, DrawMenu shows "->"
  107.  
  108.    ; The NextSelect field represents the menu number of next selected 
  109.    ; item (when user has drag-selected several items)
  110.     WORD mi_NextSelect
  111.  
  112.     LABEL  mi_SIZEOF
  113.  
  114. ; --- FLAGS SET BY THE APPLIPROG --------------------------------------------
  115. CHECKIT        EQU $0001    ; whether to check this item if selected
  116. ITEMTEXT    EQU $0002    ; set if textual, clear if graphical item
  117. COMMSEQ        EQU $0004    ; set if there's an command sequence
  118. MENUTOGGLE    EQU $0008    ; set to toggle the check of a menu item 
  119. ITEMENABLED    EQU $0010    ; set if this item is enabled
  120.  
  121. ; these are the SPECIAL HIGHLIGHT FLAG state meanings 
  122. HIGHFLAGS    EQU $00C0    ; see definitions below for these bits
  123. HIGHIMAGE    EQU $0000    ; use the user's "select image"
  124. HIGHCOMP    EQU $0040    ; highlight by complementing the select box
  125. HIGHBOX        EQU $0080    ; highlight by drawing a box around the image
  126. HIGHNONE    EQU $00C0    ; don't highlight
  127.  
  128. ; --- FLAGS SET BY BOTH APPLIPROG AND INTUITION -----------------------------
  129. CHECKED        EQU $0100    ; if CHECKIT, then set this when selected
  130.  
  131.  
  132. ; --- FLAGS SET BY INTUITION ------------------------------------------------
  133. ISDRAWN        EQU $1000    ; this item's subs are currently drawn
  134. HIGHITEM    EQU $2000    ; this item is currently highlighted
  135. MENUTOGGLED    EQU $4000    ; this item was already toggled 
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142. ; ========================================================================
  143. ; === Requester ==========================================================
  144. ; ========================================================================
  145.  STRUCTURE Requester,0
  146.  
  147.     ; the ClipRect and BitMap and used for rendering the requester
  148.     APTR  rq_OlderRequest
  149.     WORD rq_LeftEdge        ; dimensions of the entire box
  150.     WORD rq_TopEdge        ; dimensions of the entire box
  151.     WORD rq_Width        ; dimensions of the entire box
  152.     WORD rq_Height        ; dimensions of the entire box
  153.  
  154.     WORD rq_RelLeft        ; get POINTREL Pointer relativity offsets
  155.     WORD rq_RelTop        ; get POINTREL Pointer relativity offsets
  156.  
  157.     APTR  rq_ReqGadget        ; pointer to the first of a list of gadgets
  158.     APTR  rq_ReqBorder        ; the box's border
  159.     APTR  rq_ReqText        ; the box's text
  160.  
  161.     WORD  rq_Flags        ; see definitions below
  162.  
  163.     UBYTE rq_BackFill        ; pen number for back-plane fill before draws
  164.  
  165.     BYTE rq_KludgeFill00    ; This is strictly for word-alignment
  166.  
  167.     APTR rq_ReqLayer        ; layer in which requester rendered
  168.     STRUCT rq_ReqPad1,32    ; for backwards compatibility (reserved)
  169.  
  170.     ; If the BitMap plane pointers are non-zero, this tells the system 
  171.     ; that the image comes pre-drawn (if the appliprog wants to define 
  172.     ; it's own box, in any shape or size it wants!); this is OK by 
  173.     ; Intuition as long as there's a good correspondence between the image 
  174.     ; and the specified Gadgets
  175.     APTR  rq_ImageBMap        ; points to the BitMap of PREDRAWN imagery
  176.  
  177.     APTR  rq_RWindow        ; points back to requester's window
  178.     STRUCT rq_ReqPad2,36    ; for backwards compatibility (reserved)
  179.  
  180.     LABEL rq_SIZEOF
  181.  
  182. ; FLAGS SET BY THE APPLIPROG
  183. POINTREL    EQU $0001  ; if POINTREL set, TopLeft is relative to pointer
  184. PREDRAWN    EQU $0002  ; if ReqBMap points to predrawn Requester imagery
  185. NOISYREQ    EQU $0004  ; if you don't want requester to filter input
  186.  
  187. ; FLAGS SET BY INTUITION;
  188. REQOFFWINDOW    EQU $1000    ; part of one of the Gadgets was offwindow
  189. REQACTIVE    EQU $2000    ; this requester is active
  190. SYSREQUEST    EQU $4000    ; this requester caused by system
  191. DEFERREFRESH    EQU $8000    ; this Requester stops a Refresh broadcast
  192.  
  193.  
  194.  
  195.  
  196.  
  197. ; ========================================================================
  198. ; === Gadget =============================================================
  199. ; ========================================================================
  200.  STRUCTURE Gadget,0
  201.  
  202.     APTR gg_NextGadget        ; next gadget in the list
  203.  
  204.     WORD gg_LeftEdge        ; "hit box" of gadget
  205.     WORD gg_TopEdge        ; "hit box" of gadget
  206.     WORD gg_Width        ; "hit box" of gadget
  207.     WORD gg_Height        ; "hit box" of gadget
  208.  
  209.     WORD gg_Flags        ; see below for list of defines
  210.  
  211.     WORD gg_Activation        ; see below for list of defines
  212.  
  213.     WORD gg_GadgetType        ; see below for defines
  214.  
  215.     ; appliprog can specify that the Gadget be rendered as either as Border
  216.     ; or an Image.  This variable points to which (or equals NULL if there's
  217.     ; nothing to be rendered about this Gadget)
  218.     APTR gg_GadgetRender
  219.  
  220.     ; appliprog can specify "highlighted" imagery rather than algorithmic
  221.     ; this can point to either Border or Image data
  222.     APTR gg_SelectRender
  223.  
  224.     APTR gg_GadgetText        ; text for this gadget;
  225.  
  226.     ; by using the MutualExclude word, the appliprog can describe 
  227.     ; which gadgets mutually-exclude which other ones.    The bits in 
  228.     ; MutualExclude correspond to the gadgets in object containing 
  229.     ; the gadget list.    If this gadget is selected and a bit is set 
  230.     ; in this gadget's MutualExclude and the gadget corresponding to 
  231.     ; that bit is currently selected (e.g. bit 2 set and gadget 2 
  232.     ; is currently selected) that gadget must be unselected.  Intuition 
  233.     ; does the visual unselecting (with checkmarks) and leaves it up 
  234.     ; to the program to unselect internally
  235.     LONG gg_MutualExclude    ; set bits mean this gadget excludes that
  236.  
  237.     ; pointer to a structure of special data required by Proportional, String 
  238.     ; and Integer Gadgets
  239.     APTR gg_SpecialInfo
  240.  
  241.     WORD gg_GadgetID    ; user-definable ID field
  242.     APTR  gg_UserData    ; ptr to general purpose User data (ignored by Intuit)
  243.  
  244.     LABEL gg_SIZEOF
  245.  
  246. ; --- FLAGS SET BY THE APPLIPROG --------------------------------------------
  247. ; combinations in these bits describe the highlight technique to be used
  248. GADGHIGHBITS    EQU $0003
  249. GADGHCOMP    EQU $0000    ; Complement the select box
  250. GADGHBOX    EQU $0001    ; Draw a box around the image
  251. GADGHIMAGE    EQU $0002    ; Blast in this alternate image
  252. GADGHNONE    EQU $0003    ; don't highlight
  253.  
  254. ; set this flag if the GadgetRender and SelectRender point to Image imagery, 
  255. ; clear if it's a Border 
  256. GADGIMAGE    EQU $0004 
  257.  
  258. ; combinations in these next two bits specify to which corner the gadget's
  259. ; Left & Top coordinates are relative.    If relative to Top/Left,
  260. ; these are "normal" coordinates (everything is relative to something in
  261. ; this universe)
  262. GRELBOTTOM    EQU $0008    ; set if rel to bottom, clear if rel top
  263. GRELRIGHT    EQU $0010    ; set if rel to right, clear if to left
  264. ; set the RELWIDTH bit to spec that Width is relative to width of screen
  265. GRELWIDTH    EQU $0020
  266. ; set the RELHEIGHT bit to spec that Height is rel to height of screen
  267. GRELHEIGHT    EQU $0040
  268.  
  269. ; the SELECTED flag is initialized by you and set by Intuition.     It 
  270. ; specifies whether or not this Gadget is currently selected/highlighted
  271. SELECTED    EQU $0080
  272.  
  273.  
  274. ; the GADGDISABLED flag is initialized by you and later set by Intuition
  275. ; according to your calls to On/OffGadget().  It specifies whether or not 
  276. ; this Gadget is currently disabled from being selected
  277. GADGDISABLED    EQU $0100
  278.  
  279.  
  280. ; --- These are the Activation flag bits ----------------------------------
  281. ; RELVERIFY is set if you want to verify that the pointer was still over
  282. ; the gadget when the select button was released
  283. RELVERIFY    EQU $0001
  284.  
  285. ; the flag GADGIMMEDIATE, when set, informs the caller that the gadget
  286. ; was activated when it was activated.    this flag works in conjunction with
  287. ; the RELVERIFY flag
  288. GADGIMMEDIATE    EQU $0002
  289.  
  290. ; the flag ENDGADGET, when set, tells the system that this gadget, when
  291. ; selected, causes the Requester or AbsMessage to be ended.  Requesters or
  292. ; AbsMessages that are ended are erased and unlinked from the system
  293. ENDGADGET    EQU $0004
  294.  
  295. ; the FOLLOWMOUSE flag, when set, specifies that you want to receive
  296. ; reports on mouse movements (ie, you want the REPORTMOUSE function for
  297. ; your Window).     When the Gadget is deselected (immediately if you have
  298. ; no RELVERIFY) the previous state of the REPORTMOUSE flag is restored
  299. ; You probably want to set the GADGIMMEDIATE flag when using FOLLOWMOUSE,
  300. ; since that's the only reasonable way you have of learning why Intuition
  301. ; is suddenly sending you a stream of mouse movement events.  If you don't
  302. ; set RELVERIFY, you'll get at least one Mouse Position event.
  303. FOLLOWMOUSE    EQU $0008
  304.  
  305. ; if any of the BORDER flags are set in a Gadget that"s included in the
  306. ; Gadget list when a Window is opened, the corresponding Border will
  307. ; be adjusted to make room for the Gadget
  308. RIGHTBORDER    EQU $0010
  309. LEFTBORDER    EQU $0020
  310. TOPBORDER    EQU $0040
  311. BOTTOMBORDER    EQU $0080
  312.  
  313. TOGGLESELECT    EQU $0100    ; this bit for toggle-select mode
  314.  
  315. STRINGCENTER    EQU $0200    ; center the String
  316. STRINGRIGHT    EQU $0400    ; right-justify the String
  317.  
  318. LONGINT        EQU $0800    ; This String Gadget is a Long Integer
  319.  
  320. ALTKEYMAP    EQU $1000    ; This String has an alternate keymapping
  321.  
  322. BOOLEXTEND    EQU $2000    ; This Boolean Gadget has a BoolInfo
  323.  
  324. ; --- GADGET TYPES -----------------------------------------------------------
  325. ; These are the Gaget Type definitions for the variable GadgetType.
  326. ; Gadget number type MUST start from one.  NO TYPES OF ZERO ALLOWED.
  327. ; first comes the mask for Gadget flags reserved for Gadget typing
  328. GADGETTYPE    EQU $FC00    ; all Gadget Global Type flags (padded)
  329. SYSGADGET    EQU $8000    ; 1 = SysGadget, 0 = AppliGadget
  330. SCRGADGET    EQU $4000    ; 1 = ScreenGadget, 0 = WindowGadget
  331. GZZGADGET    EQU $2000    ; 1 = Gadget for GIMMEZEROZERO borders
  332. REQGADGET    EQU $1000    ; 1 = this is a Requester Gadget
  333. ; system gadgets
  334. SIZING        EQU $0010
  335. WDRAGGING    EQU $0020
  336. SDRAGGING    EQU $0030
  337. WUPFRONT    EQU $0040
  338. SUPFRONT    EQU $0050
  339. WDOWNBACK    EQU $0060
  340. SDOWNBACK    EQU $0070
  341. CLOSE        EQU $0080
  342. ; application gadgets
  343. BOOLGADGET    EQU $0001
  344. GADGET0002    EQU $0002
  345. PROPGADGET    EQU $0003
  346. STRGADGET    EQU $0004
  347.  
  348.  
  349.  
  350. ; ======================================================================== 
  351. ; === BoolInfo============================================================
  352. ; ======================================================================== 
  353. ; This is the special data needed by an Extended Boolean Gadget
  354. ; Typically this structure will be pointed to by the Gadget field SpecialInfo
  355.  
  356.  STRUCTURE BoolInfo,0
  357.  
  358.     WORD    bi_Flags    ; defined below 
  359.     APTR    bi_Mask    ; bit mask for highlighting and selecting
  360.             ; mask must follow the same rules as an Image
  361.             ; plane.  It's width and height are determined
  362.             ; by the width and height of the gadget's 
  363.             ; select box. (i.e. Gadget.Width and .Height).
  364.     LONG    bi_Reserved ; set to 0
  365.  
  366.     LABEL   bi_SIZEOF
  367.  
  368. ; set BoolInfo.Flags to this flag bit.
  369. ; in the future, additional bits might mean more stuff hanging
  370. ; off of BoolInfo.Reserved.
  371.  
  372. BOOLMASK    EQU    $0001    ; extension is for masked gadget
  373.  
  374. ; ========================================================================
  375. ; === PropInfo ===========================================================
  376. ; ========================================================================
  377. ; this is the special data required by the proportional Gadget
  378. ; typically, this data will be pointed to by the Gadget variable SpecialInfo
  379.  STRUCTURE PropInfo,0
  380.  
  381.     WORD pi_Flags    ; general purpose flag bits (see defines below)
  382.  
  383.     ; You initialize the Pot variables before the Gadget is added to 
  384.     ; the system.  Then you can look here for the current settings 
  385.     ; any time, even while User is playing with this Gadget.  To 
  386.     ; adjust these after the Gadget is added to the System, use 
  387.     ; ModifyProp(); The Pots are the actual proportional settings, 
  388.     ; where a value of zero means zero and a value of MAXPOT means 
  389.     ; that the Gadget is set to its maximum setting.
  390.     WORD pi_HorizPot    ; 16-bit FixedPoint horizontal quantity percentage;
  391.     WORD pi_VertPot    ; 16-bit FixedPoint vertical quantity percentage;
  392.  
  393.     ; the 16-bit FixedPoint Body variables describe what percentage 
  394.     ; of the entire body of stuff referred to by this Gadget is 
  395.     ; actually shown at one time.  This is used with the AUTOKNOB 
  396.     ; routines, to adjust the size of the AUTOKNOB according to how 
  397.     ; much of the data can be seen.  This is also used to decide how 
  398.     ; far to advance the Pots when User hits the Container of the Gadget.  
  399.     ; For instance, if you were controlling the display of a 5-line 
  400.     ; Window of text with this Gadget, and there was a total of 15 
  401.     ; lines that could be displayed, you would set the VertBody value to 
  402.     ;     (MAXBODY / (TotalLines / DisplayLines)) = MAXBODY / 3.
  403.     ; Therefore, the AUTOKNOB would fill 1/3 of the container, and if 
  404.     ; User hits the Cotainer outside of the knob, the pot would advance 
  405.     ; 1/3 (plus or minus) If there's no body to show, or the total 
  406.     ; amount of displayable info is less than the display area, set the 
  407.     ; Body variables to the MAX.  To adjust these after the Gadget is 
  408.     ; added to the System, use ModifyProp().
  409.     WORD pi_HorizBody    ; horizontal Body
  410.     WORD pi_VertBody    ; vertical Body
  411.  
  412.     ; these are the variables that Intuition sets and maintains
  413.     WORD pi_CWidth    ; Container width (with any relativity absoluted)
  414.     WORD pi_CHeight    ; Container height (with any relativity absoluted)
  415.     WORD pi_HPotRes    ; pot increments
  416.     WORD pi_VPotRes    ; pot increments
  417.     WORD pi_LeftBorder    ; Container borders
  418.     WORD pi_TopBorder    ; Container borders
  419.     LABEL  pi_SIZEOF
  420.  
  421. ; --- FLAG BITS --------------------------------------------------------------
  422. AUTOKNOB    EQU $0001    ; this flag sez:  gimme that old auto-knob
  423. FREEHORIZ    EQU $0002    ; if set, the knob can move horizontally
  424. FREEVERT    EQU $0004    ; if set, the knob can move vertically
  425. PROPBORDERLESS    EQU $0008    ; if set, no border will be rendered
  426. KNOBHIT        EQU $0100    ; set when this Knob is hit
  427.  
  428.  
  429. KNOBHMIN    EQU 6        ; minimum horizontal size of the knob
  430. KNOBVMIN    EQU 4        ; minimum vertical size of the knob
  431. MAXBODY        EQU $FFFF    ; maximum body value
  432. MAXPOT        EQU $FFFF    ; maximum pot value
  433.  
  434.  
  435. ; ========================================================================
  436. ; === StringInfo =========================================================
  437. ; ========================================================================
  438. ; this is the special data required by the string Gadget
  439. ; typically, this data will be pointed to by the Gadget variable SpecialInfo
  440.  STRUCTURE StringInfo,0
  441.  
  442.     ; you initialize these variables, and then Intuition maintains them
  443.     APTR  si_Buffer    ; the buffer containing the start and final string
  444.     APTR  si_UndoBuffer ; optional buffer for undoing current entry
  445.     WORD si_BufferPos    ; character position in Buffer
  446.     WORD si_MaxChars    ; max number of chars in Buffer (including NULL)
  447.     WORD si_DispPos    ; Buffer position of first displayed character
  448.  
  449.     ; Intuition initializes and maintains these variables for you
  450.     WORD si_UndoPos    ; character position in the undo buffer
  451.     WORD si_NumChars    ; number of characters currently in Buffer
  452.     WORD si_DispCount    ; number of whole characters visible in Container
  453.     WORD si_CLeft    ; topleft offset of the container
  454.     WORD si_CTop    ; topleft offset of the container
  455.     APTR  si_LayerPtr    ; the RastPort containing this Gadget
  456.  
  457.     ; you can initialize this variable before the gadget is submitted to
  458.     ; Intuition, and then examine it later to discover what integer 
  459.     ; the user has entered (if the user never plays with the gadget, 
  460.     ; the value will be unchanged from your initial setting)
  461.     LONG  si_LongInt    ; the LONG return value of a LONGINT String Gadget
  462.  
  463.     ; If you want this Gadget to use your own Console keymapping, you
  464.     ; set the ALTKEYMAP bit in the Activation flags of the Gadget, and then
  465.     ; set this variable to point to your keymap.  If you don't set the
  466.     ; ALTKEYMAP, you'll get the standard ASCII keymapping.
  467.     APTR si_AltKeyMap
  468.  
  469.     LABEL si_SIZEOF
  470.  
  471.  
  472.  
  473.  
  474. ; ========================================================================
  475. ; === IntuiText ==========================================================
  476. ; ========================================================================
  477. ; IntuiText is a series of strings that start with a screen location
  478. ; (always relative to the upper-left corner of something) and then the
  479. ; text of the string.  The text is null-terminated.
  480.  STRUCTURE IntuiText,0
  481.  
  482.     BYTE it_FrontPen        ; the pens for rendering the text
  483.     BYTE it_BackPen        ; the pens for rendering the text
  484.  
  485.     BYTE it_DrawMode        ; the mode for rendering the text
  486.  
  487.     BYTE it_KludgeFill00    ; This is strictly for word-alignment 
  488.  
  489.     WORD it_LeftEdge        ; relative start location for the text
  490.     WORD it_TopEdge        ; relative start location for the text
  491.  
  492.     APTR  it_ITextFont        ; if NULL, you accept the defaults
  493.  
  494.     APTR it_IText        ; pointer to null-terminated text
  495.  
  496.     APTR  it_NextText        ; continuation to TxWrite another text
  497.  
  498.     LABEL it_SIZEOF
  499.  
  500.  
  501.  
  502.  
  503.  
  504. ; ========================================================================
  505. ; === Border =============================================================
  506. ; ========================================================================
  507. ; Data type Border, used for drawing a series of lines which is intended for
  508. ; use as a border drawing, but which may, in fact, be used to render any
  509. ; arbitrary vector shape.
  510. ; The routine DrawBorder sets up the RastPort with the appropriate
  511. ; variables, then does a Move to the first coordinate, then does Draws
  512. ; to the subsequent coordinates.
  513. ; After all the Draws are done, if NextBorder is non-zero we call DrawBorder
  514. ; recursively
  515.  STRUCTURE Border,0
  516.  
  517.     WORD  bd_LeftEdge        ; initial offsets from the origin
  518.     WORD  bd_TopEdge        ; initial offsets from the origin
  519.     BYTE  bd_FrontPen        ; pen number for rendering 
  520.     BYTE  bd_BackPen        ; pen number for rendering 
  521.     BYTE  bd_DrawMode        ; mode for rendering 
  522.     BYTE  bd_Count        ; number of XY pairs
  523.     APTR  bd_XY            ; vector coordinate pairs rel to LeftTop
  524.     APTR  bd_NextBorder        ; pointer to any other Border too
  525.  
  526.     LABEL bd_SIZEOF
  527.  
  528.  
  529. ; ======================================================================== 
  530. ; === Image ============================================================== 
  531. ; ======================================================================== 
  532. ; This is a brief image structure for very simple transfers of 
  533. ; image data to a RastPort
  534.  STRUCTURE Image,0
  535.  
  536.     WORD ig_LeftEdge        ; starting offset relative to something 
  537.     WORD ig_TopEdge        ; starting offset relative to something 
  538.     WORD ig_Width        ; pixel size (though data is word-aligned)
  539.     WORD ig_Height        ; pixel size 
  540.     WORD ig_Depth        ; pixel size 
  541.     APTR ig_ImageData        ; pointer to the actual image bits
  542.  
  543.     ; the PlanePick and PlaneOnOff variables work much the same way as the
  544.     ; equivalent GELS Bob variables.  It's a space-saving 
  545.     ; mechanism for image data.     Rather than defining the image data
  546.     ; for every plane of the RastPort, you need define data only for planes 
  547.     ; that are not entirely zero or one.  As you define your Imagery, you will
  548.     ; often find that most of the planes ARE just as color selectors.  For
  549.     ; instance, if you're designing a two-color Gadget to use colors two and
  550.     ; three, and the Gadget will reside in a five-plane display, plane zero
  551.     ; of your imagery would be all ones, bit plane one would have data that
  552.     ; describes the imagery, and bit planes two through four would be
  553.     ; all zeroes.  Using these flags allows you to avoid wasting all that 
  554.     ; memory in this way:  
  555.     ; first, you specify which planes you want your data to appear 
  556.     ; in using the PlanePick variable.    For each bit set in the variable, the 
  557.     ; next "plane" of your image data is blitted to the display.  For each bit
  558.     ; clear in this variable, the corresponding bit in PlaneOnOff is examined.
  559.     ; If that bit is clear, a "plane" of zeroes will be used.  If the bit is 
  560.     ; set, ones will go out instead.  So, for our example:
  561.     ;    Gadget.PlanePick = 0x02;
  562.     ;    Gadget.PlaneOnOff = 0x01;
  563.     ; Note that this also allows for generic Gadgets, like the System Gadgets,
  564.     ; which will work in any number of bit planes
  565.     ; Note also that if you want an Image that is only a filled rectangle,
  566.     ; you can get this by setting PlanePick to zero (pick no planes of data)
  567.     ; and set PlaneOnOff to describe the pen color of the rectangle.
  568.     BYTE ig_PlanePick
  569.     BYTE ig_PlaneOnOff
  570.  
  571.     ; if the NextImage variable is not NULL, Intuition presumes that 
  572.     ; it points to another Image structure with another Image to be 
  573.     ; rendered
  574.     APTR ig_NextImage
  575.  
  576.  
  577.     LABEL ig_SIZEOF
  578.  
  579.  
  580.  
  581.  
  582. ; ======================================================================== 
  583. ; === IntuiMessage ======================================================= 
  584. ; ======================================================================== 
  585.  STRUCTURE IntuiMessage,0
  586.  
  587.     STRUCT im_ExecMessage,MN_SIZE
  588.  
  589.     ; the Class bits correspond directly with the IDCMP Flags, except for the
  590.     ; special bit LONELYMESSAGE (defined below)
  591.     LONG im_Class
  592.  
  593.     ; the Code field is for special values like MENU number 
  594.     WORD im_Code
  595.  
  596.     ; the Qualifier field is a copy of the current InputEvent's Qualifier 
  597.     WORD im_Qualifier
  598.  
  599.     ; IAddress contains particular addresses for Intuition functions, like
  600.     ; the pointer to the Gadget or the Screen
  601.     APTR im_IAddress
  602.  
  603.     ; when getting mouse movement reports, any event you get will have the
  604.     ; the mouse coordinates in these variables.     the coordinates are relative
  605.     ; to the upper-left corner of your Window (GIMMEZEROZERO notwithstanding)
  606.     WORD im_MouseX
  607.     WORD im_MouseY
  608.  
  609.     ; the time values are copies of the current system clock time.  Micros
  610.     ; are in units of microseconds, Seconds in seconds.
  611.     LONG im_Seconds
  612.     LONG im_Micros
  613.  
  614.     ; the IDCMPWindow variable will always have the address of the Window of 
  615.     ; this IDCMP 
  616.     APTR im_IDCMPWindow
  617.  
  618.     ; system-use variable 
  619.     APTR im_SpecialLink
  620.  
  621.     LABEL  im_SIZEOF
  622.  
  623.  
  624.  
  625. ; --- IDCMP Classes ------------------------------------------------------ 
  626. SIZEVERIFY    EQU    $00000001    ; See the Programmer's Guide
  627. NEWSIZE        EQU    $00000002    ; See the Programmer's Guide
  628. REFRESHWINDOW    EQU    $00000004    ; See the Programmer's Guide
  629. MOUSEBUTTONS    EQU    $00000008    ; See the Programmer's Guide
  630. MOUSEMOVE    EQU    $00000010    ; See the Programmer's Guide 
  631. GADGETDOWN    EQU    $00000020    ; See the Programmer's Guide
  632. GADGETUP    EQU    $00000040    ; See the Programmer's Guide 
  633. REQSET        EQU    $00000080    ; See the Programmer's Guide
  634. MENUPICK    EQU    $00000100    ; See the Programmer's Guide 
  635. CLOSEWINDOW    EQU    $00000200    ; See the Programmer's Guide
  636. RAWKEY        EQU    $00000400    ; See the Programmer's Guide 
  637. REQVERIFY    EQU    $00000800    ; See the Programmer's Guide
  638. REQCLEAR    EQU    $00001000    ; See the Programmer's Guide 
  639. MENUVERIFY    EQU    $00002000    ; See the Programmer's Guide
  640. NEWPREFS    EQU    $00004000    ; See the Programmer's Guide 
  641. DISKINSERTED    EQU    $00008000    ; See the Programmer's Guide
  642. DISKREMOVED    EQU    $00010000    ; See the Programmer's Guide 
  643. WBENCHMESSAGE    EQU    $00020000    ; See the Programmer's Guide
  644. ACTIVEWINDOW    EQU    $00040000    ; See the Programmer's Guide
  645. INACTIVEWINDOW    EQU    $00080000    ; See the Programmer's Guide
  646. DELTAMOVE    EQU    $00100000    ; See the Programmer's Guide
  647. VANILLAKEY    EQU    $00200000    ; See the Programmer's Guide
  648. INTUITICKS    EQU    $00400000    ; See the Programmer's Guide
  649. ; NOTEZ-BIEN:        $80000000 is reserved for internal use by IDCMP
  650.  
  651. ; the IDCMP Flags do not use this special bit, which is cleared when
  652. ; Intuition sends its special message to the Task, and set when Intuition
  653. ; gets its Message back from the Task.    Therefore, I can check here to
  654. ; find out fast whether or not this Message is available for me to send
  655. LONELYMESSAGE    EQU    $80000000
  656.  
  657.  
  658.  
  659. ; --- IDCMP Codes -------------------------------------------------------- 
  660. ; This group of codes is for the MENUVERIFY function 
  661. MENUHOT        EQU    $0001    ; IntuiWants verification or MENUCANCEL       
  662. MENUCANCEL    EQU    $0002    ; HOT Reply of this cancels Menu operation 
  663. MENUWAITING    EQU    $0003    ; Intuition simply wants a ReplyMsg() ASAP 
  664.  
  665. ; These are internal tokens to represent state of verification attempts
  666. ; shown here as a clue.
  667. OKOK        EQU    MENUHOT        ; guy didn't care
  668. OKABORT        EQU    $0004        ; window rendered question moot
  669. OKCANCEL    EQU    MENUCANCEL    ; window sent cancel reply
  670.  
  671. ; This group of codes is for the WBENCHMESSAGE messages
  672. WBENCHOPEN    EQU $0001
  673. WBENCHCLOSE    EQU $0002
  674.  
  675.  
  676.  
  677.  
  678. ; ======================================================================== 
  679. ; === Window ============================================================= 
  680. ; ======================================================================== 
  681.  STRUCTURE Window,0
  682.  
  683.     APTR wd_NextWindow        ; for the linked list of a Screen
  684.  
  685.     WORD wd_LeftEdge        ; screen dimensions
  686.     WORD wd_TopEdge        ; screen dimensions
  687.     WORD wd_Width        ; screen dimensions
  688.     WORD wd_Height        ; screen dimensions
  689.  
  690.     WORD wd_MouseY        ; relative top top-left corner 
  691.     WORD wd_MouseX        ; relative top top-left corner 
  692.  
  693.     WORD wd_MinWidth        ; minimum sizes
  694.     WORD wd_MinHeight        ; minimum sizes
  695.     WORD wd_MaxWidth        ; maximum sizes
  696.     WORD wd_MaxHeight        ; maximum sizes
  697.  
  698.     LONG wd_Flags        ; see below for definitions
  699.  
  700.     APTR wd_MenuStrip        ; first in a list of menu headers
  701.  
  702.     APTR wd_Title        ; title text for the Window
  703.  
  704.     APTR wd_FirstRequest    ; first in linked list of active Requesters 
  705.     APTR wd_DMRequest        ; the double-menu Requester 
  706.     WORD wd_ReqCount        ; number of Requesters blocking this Window
  707.     APTR wd_WScreen        ; this Window's Screen
  708.     APTR wd_RPort        ; this Window's very own RastPort
  709.  
  710.     ; the border variables describe the window border.    If you specify
  711.     ; GIMMEZEROZERO when you open the window, then the upper-left of the
  712.     ; ClipRect for this window will be upper-left of the BitMap (with correct
  713.     ; offsets when in SuperBitMap mode; you MUST select GIMMEZEROZERO when
  714.     ; using SuperBitMap).  If you don't specify ZeroZero, then you save
  715.     ; memory (no allocation of RastPort, Layer, ClipRect and associated
  716.     ; Bitmaps), but you also must offset all your writes by BorderTop,
  717.     ; BorderLeft and do your own mini-clipping to prevent writing over the
  718.     ; system gadgets
  719.     BYTE wd_BorderLeft
  720.     BYTE wd_BorderTop
  721.     BYTE wd_BorderRight
  722.     BYTE wd_BorderBottom
  723.     APTR wd_BorderRPort
  724.  
  725.     ; You supply a linked-list of gadget that you want for your Window.
  726.     ; This list DOES NOT include system Gadgets.  You get the standard
  727.     ; window system Gadgets by setting flag-bits in the variable Flags (see
  728.     ; the bit definitions below)
  729.     APTR wd_FirstGadget
  730.  
  731.     ; these are for opening/closing the windows 
  732.     APTR wd_Parent
  733.     APTR wd_Descendant
  734.  
  735.     ; sprite data information for your own Pointer
  736.     ; set these AFTER you Open the Window by calling SetPointer()
  737.     APTR wd_Pointer
  738.     BYTE wd_PtrHeight
  739.     BYTE wd_PtrWidth
  740.     BYTE wd_XOffset
  741.     BYTE wd_YOffset
  742.  
  743.     ; the IDCMP Flags and User's and Intuition's Message Ports 
  744.     ULONG wd_IDCMPFlags
  745.     APTR wd_UserPort
  746.     APTR wd_WindowPort
  747.     APTR wd_MessageKey
  748.  
  749.     BYTE wd_DetailPen
  750.     BYTE wd_BlockPen
  751.  
  752.     ; the CheckMark is a pointer to the imagery that will be used when 
  753.     ; rendering MenuItems of this Window that want to be checkmarked
  754.     ; if this is equal to NULL, you'll get the default imagery
  755.     APTR wd_CheckMark
  756.  
  757.     ; if non-null, Screen title when Window is active 
  758.     APTR wd_ScreenTitle
  759.  
  760.     ; These variables have the mouse coordinates relative to the 
  761.     ; inner-Window of GIMMEZEROZERO Windows.  This is compared with the
  762.     ; MouseX and MouseY variables, which contain the mouse coordinates
  763.     ; relative to the upper-left corner of the Window, GIMMEZEROZERO
  764.     ; notwithstanding
  765.     WORD wd_GZZMouseX
  766.     WORD wd_GZZMouseY
  767.     ; these variables contain the width and height of the inner-Window of
  768.     ; GIMMEZEROZERO Windows
  769.     WORD wd_GZZWidth
  770.     WORD wd_GZZHeight
  771.  
  772.     APTR wd_ExtData
  773.  
  774.     ; general-purpose pointer to User data extension 
  775.     APTR wd_UserData
  776.     APTR wd_WLayer    ; stash of Window.RPort->Layer
  777.  
  778.     ; NEW 1.2: need to keep track of the font that OpenWindow opened,
  779.     ; in case user SetFont's into RastPort
  780.     APTR IFont
  781.  
  782.     LABEL wd_Size
  783.  
  784. ; --- FLAGS REQUESTED (NOT DIRECTLY SET THOUGH) BY THE APPLIPROG -------------
  785. WINDOWSIZING    EQU $0001    ; include sizing system-gadget? 
  786. WINDOWDRAG    EQU $0002    ; include dragging system-gadget? 
  787. WINDOWDEPTH    EQU $0004    ; include depth arrangement gadget? 
  788. WINDOWCLOSE    EQU $0008    ; include close-box system-gadget? 
  789.  
  790. SIZEBRIGHT    EQU $0010    ; size gadget uses right border 
  791. SIZEBBOTTOM    EQU $0020    ; size gadget uses bottom border 
  792.  
  793. ; --- refresh modes ----------------------------------------------------------
  794. ; combinations of the REFRESHBITS select the refresh type 
  795. REFRESHBITS    EQU $00C0
  796. SMART_REFRESH    EQU $0000
  797. SIMPLE_REFRESH    EQU $0040
  798. SUPER_BITMAP    EQU $0080
  799. OTHER_REFRESH    EQU $00C0
  800.  
  801. BACKDROP    EQU $0100    ; this is an ever-popular BACKDROP window 
  802.  
  803. REPORTMOUSE    EQU $0200    ; set this to hear about every mouse move 
  804.  
  805. GIMMEZEROZERO    EQU $0400    ; make extra border stuff 
  806.  
  807. BORDERLESS    EQU $0800    ; set this to get a Window sans border 
  808.  
  809. ACTIVATE    EQU $1000    ; when Window opens, it's the Active one 
  810.  
  811. ; FLAGS SET BY INTUITION 
  812. WINDOWACTIVE    EQU $2000    ; this window is the active one 
  813. INREQUEST    EQU $4000    ; this window is in request mode 
  814. MENUSTATE    EQU $8000    ; this Window is active with its Menus on 
  815.  
  816. ; --- Other User Flags -------------------------------------------------------
  817. RMBTRAP        EQU $00010000    ; Catch RMB events for your own 
  818. NOCAREREFRESH    EQU $00020000    ; not to be bothered with REFRESH
  819.  
  820. ; --- Other Intuition Flags ----------------------------------------------
  821. WINDOWREFRESH    EQU $01000000    ; Window is currently refreshing
  822. WBENCHWINDOW    EQU $02000000    ; WorkBench Window
  823. WINDOWTICKED    EQU $04000000    ; only one timer tick at a time
  824.  
  825. SUPER_UNUSED    EQU $FCFC0000    ;bits of Flag unused yet
  826.  
  827.  
  828. ; --- see struct IntuiMessage for the IDCMP Flag definitions -----------------
  829.  
  830.  
  831. ; ======================================================================== 
  832. ; === NewWindow ========================================================== 
  833. ; ======================================================================== 
  834.  STRUCTURE NewWindow,0
  835.  
  836.     WORD nw_LeftEdge        ; initial Window dimensions
  837.     WORD nw_TopEdge        ; initial Window dimensions
  838.     WORD nw_Width        ; initial Window dimensions
  839.     WORD nw_Height        ; initial Window dimensions
  840.  
  841.     BYTE nw_DetailPen        ; for rendering the detail bits of the Window
  842.     BYTE nw_BlockPen        ; for rendering the block-fill bits 
  843.  
  844.     LONG nw_IDCMPFlags        ; initial IDCMP state
  845.  
  846.     LONG nw_Flags        ; see the Flag definition under Window
  847.  
  848.     ; You supply a linked-list of Gadgets for your Window.
  849.     ; This list DOES NOT include system Gadgets.  You get the standard
  850.     ; system Window Gadgets by setting flag-bits in the variable Flags (see
  851.     ; the bit definitions under the Window structure definition)
  852.     APTR    nw_FirstGadget
  853.  
  854.     ; the CheckMark is a pointer to the imagery that will be used when 
  855.     ; rendering MenuItems of this Window that want to be checkmarked
  856.     ; if this is equal to NULL, you'll get the default imagery
  857.     APTR nw_CheckMark
  858.  
  859.     APTR nw_Title        ; title text for the Window
  860.     
  861.     ; the Screen pointer is used only if you've defined a CUSTOMSCREEN and
  862.     ; want this Window to open in it.  If so, you pass the address of the
  863.     ; Custom Screen structure in this variable.     Otherwise, this variable
  864.     ; is ignored and doesn't have to be initialized.
  865.     APTR nw_Screen
  866.     
  867.     ; SUPER_BITMAP Window?  If so, put the address of your BitMap structure
  868.     ; in this variable.     If not, this variable is ignored and doesn't have 
  869.     ; to be initialized
  870.     APTR nw_BitMap
  871.  
  872.     ; the values describe the minimum and maximum sizes of your Windows.
  873.     ; these matter only if you've chosen the WINDOWSIZING Gadget option,
  874.     ; which means that you want to let the User to change the size of 
  875.     ; this Window.  You describe the minimum and maximum sizes that the
  876.     ; Window can grow by setting these variables.  You can initialize
  877.     ; any one these to zero, which will mean that you want to duplicate
  878.     ; the setting for that dimension (if MinWidth == 0, MinWidth will be
  879.     ; set to the opening Width of the Window).
  880.     ; You can change these settings later using SetWindowLimits().
  881.     ; If you haven't asked for a SIZING Gadget, you don't have to
  882.     ; initialize any of these variables.
  883.     WORD nw_MinWidth
  884.     WORD nw_MinHeight
  885.     WORD nw_MaxWidth
  886.     WORD nw_MaxHeight
  887.  
  888.     ; the type variable describes the Screen in which you want this Window to
  889.     ; open.  The type value can either be CUSTOMSCREEN or one of the
  890.     ; system standard Screen Types such as WBENCHSCREEN.  See the
  891.     ; type definitions under the Screen structure
  892.     WORD nw_Type
  893.  
  894.     LABEL nw_SIZE
  895.  
  896.  
  897.     IFND INTUITION_SCREENS_I
  898.     INCLUDE "intuition/screens.i"
  899.     ENDC
  900.  
  901.     IFND INTUITION_PREFERENCES_I
  902.     INCLUDE "intuition/preferences.i"
  903.     ENDC
  904.  
  905. ; ========================================================================
  906. ; === Remember ===========================================================
  907. ; ========================================================================
  908. ; this structure is used for remembering what memory has been allocated to
  909. ; date by a given routine, so that a premature abort or systematic exit
  910. ; can deallocate memory cleanly, easily, and completely
  911.  STRUCTURE Remember,0
  912.  
  913.     APTR rm_NextRemember
  914.     LONG rm_RememberSize
  915.     APTR rm_Memory
  916.  
  917.  LABEL      rm_SIZEOF
  918.  
  919.  
  920.  
  921. ; ======================================================================== 
  922. ; === Miscellaneous ====================================================== 
  923. ; ======================================================================== 
  924.  
  925. ; = MACROS ============================================================== 
  926. ;#define MENUNUM(n) (n & 0x1F)
  927. ;#define ITEMNUM(n) ((n >> 5) & 0x003F)
  928. ;#define SUBNUM(n) ((n >> 11) & 0x001F)
  929. ;
  930. ;#define SHIFTMENU(n) (n & 0x1F)
  931. ;#define SHIFTITEM(n) ((n & 0x3F) << 5)
  932. ;#define SHIFTSUB(n) ((n & 0x1F) << 11)
  933. ;
  934. ;#define SRBNUM(n)  (0x08 - (n >> 4))  /* SerRWBits -> read bits per char */
  935. ;#define SWBNUM(n)  (0x08 - (n & 0x0F))/* SerRWBits -> write bits per chr */
  936. ;#define SSBNUM(n)  (0x01 + (n >> 4))  /* SerStopBuf -> stop bits per chr */
  937. ;#define SPARNUM(n) (n >> 4)           /* SerParShk -> parity setting     */
  938. ;#define SHAKNUM(n) (n & 0x0F)           /* SerParShk -> handshake mode     */
  939. ;
  940. ; = MENU STUFF =========================================================== 
  941. NOMENU EQU    $001F
  942. NOITEM EQU    $003F
  943. NOSUB  EQU    $001F
  944. MENUNULL EQU    $FFFF
  945.  
  946.  
  947. ; = =RJ='s peculiarities ================================================= 
  948. ;#define FOREVER for(;;)
  949. ;#define SIGN(x) ( ((x) > 0) - ((x) < 0) )
  950.  
  951.  
  952. ; these defines are for the COMMSEQ and CHECKIT menu stuff.  If CHECKIT,
  953. ; I'll use a generic Width (for all resolutions) for the CheckMark.
  954. ; If COMMSEQ, likewise I'll use this generic stuff
  955. CHECKWIDTH    EQU    19
  956. COMMWIDTH    EQU    27
  957. LOWCHECKWIDTH    EQU    13
  958. LOWCOMMWIDTH    EQU    16
  959.  
  960.  
  961. ; these are the AlertNumber defines.  if you are calling DisplayAlert()
  962. ; the AlertNumber you supply must have the ALERT_TYPE bits set to one
  963. ; of these patterns
  964. ALERT_TYPE    EQU    $80000000
  965. RECOVERY_ALERT    EQU    $00000000    ; the system can recover from this 
  966. DEADEND_ALERT    EQU    $80000000    ; no recovery possible, this is it 
  967.  
  968.  
  969. ; When you're defining IntuiText for the Positive and Negative Gadgets 
  970. ; created by a call to AutoRequest(), these defines will get you 
  971. ; reasonable-looking text.  The only field without a define is the IText
  972. ; field; you decide what text goes with the Gadget
  973. AUTOFRONTPEN    EQU    0
  974. AUTOBACKPEN    EQU    1
  975. AUTODRAWMODE    EQU    RP_JAM2
  976. AUTOLEFTEDGE    EQU    6
  977. AUTOTOPEDGE    EQU    3
  978. AUTOITEXTFONT    EQU    0
  979. AUTONEXTTEXT    EQU    0
  980.  
  981.  
  982.  
  983. ;* --- RAWMOUSE Codes and Qualifiers (Console OR IDCMP) -------------------
  984. SELECTUP    EQU    (IECODE_LBUTTON+IECODE_UP_PREFIX)
  985. SELECTDOWN    EQU    (IECODE_LBUTTON)
  986. MENUUP        EQU    (IECODE_RBUTTON+IECODE_UP_PREFIX)
  987. MENUDOWN    EQU    (IECODE_RBUTTON)
  988. ALTLEFT        EQU    (IEQUALIFIER_LALT)
  989. ALTRIGHT    EQU    (IEQUALIFIER_RALT)
  990. AMIGALEFT    EQU    (IEQUALIFIER_LCOMMAND)
  991. AMIGARIGHT    EQU    (IEQUALIFIER_RCOMMAND)
  992. AMIGAKEYS    EQU    (AMIGALEFT+AMIGARIGHT)
  993.             
  994. CURSORUP    EQU    $4C
  995. CURSORLEFT    EQU    $4F
  996. CURSORRIGHT    EQU    $4E
  997. CURSORDOWN    EQU    $4D
  998. KEYCODE_Q    EQU    $10
  999. KEYCODE_X    EQU    $32
  1000. KEYCODE_N    EQU    $36
  1001. KEYCODE_M    EQU    $37
  1002. KEYCODE_V    EQU    $34
  1003. KEYCODE_B    EQU    $35
  1004.  
  1005.     IFND    INTUITION_INTUITIONBASE_I
  1006.     include "intuition/intuitionbase.i"
  1007.     ENDC
  1008.  
  1009.     ENDC    ; INTUITION_INTUITION_I
  1010.